package org.example;

public class Main {
    /**
     *
     * @param str 主串
     * @param sub 子串
     * @return
     */
    public static int BF(String str, String sub) {
        //处理无效的字符串
        if(str == null || sub == null) return -1;
        int m = str.length(), n = sub.length();
        if(m == 0 || n == 0) return -1;
        //初始化主串与子串的指针
        int i = 0, j = 0;
        while(i < m && j < n){
            if(str.charAt(i) == sub.charAt(j)){
                i++;
                j++;
            }else{
                i = i - j + 1;//主串回退到上一次起始位置的后一个位置
                j = 0;//子串回退到起始位置
            }
        }
        //说明在主串中没有找到子串
        if(j >= n) return i - j;
        else return -1;
    }
    public static void main(String[] args) {
        System.out.println(BF("abcdefabcda", "abcda"));
        System.out.println(BF("abcdefabcda", "abcdab"));
        System.out.println(BF("abcdefabcda", "defabc"));
    }
}
